//
//  ViewController.m
//  08-UITableView
//
//  Created by dllo on 16/7/25.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import "ViewController.h"
#import "UIView+ChangeFrame.h"
#define kTableViewReuse @"reuseIndentifier"
#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, assign) NSInteger numCount;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.navigationBarHidden = YES;
    self.numCount = 0;
    // 1 基本创建
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT) style:UITableViewStylePlain];
    // tableView的alwaysBounceVertical默认为YES
//    tableView.alwaysBounceVertical = NO;
    // 2 相关属性
    // 直接设置, 行高(默认值44) **  (320, 44)
    tableView.rowHeight = 44;
    // 预估行高度
//    tableView.estimatedRowHeight = 120;
    // 分割线颜色
    tableView.separatorColor = [UIColor blackColor];
    // 设置分割线样式 默认为UITableViewCellSeparatorStyleSingleLine
//    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    /*
    // tableView头视图
    // headView的x, y不影响位置
    // 一般用来放轮播图
    UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 50, 100)];
    headView.backgroundColor = [UIColor yellowColor];
    // 如果tableHeadView要进行修改, 必须加上beginUpdates endUpdates **
    [tableView beginUpdates];
    tableView.tableHeaderView = headView;
    [tableView endUpdates];
    
    // footerView x会对尾视图产生坐标影响, y不会
    UIView *footView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.z_width, 100)];
    footView.backgroundColor = [UIColor redColor];
    [tableView beginUpdates];
    tableView.tableFooterView = footView;
    [tableView endUpdates];
     */

    // 隐藏, 多余tableView的空cell
    tableView.tableFooterView = [[UIView alloc] init];
    // 空cell一般出现在一个界面只展示几条数据 并且数据占不满整个屏幕
    
    // 3.tableView 数据展示
    // delegate 代理 帮助tableView执行一些事件
    // dataSource 数据源 用来给tableView展示数据
    tableView.delegate = self;
    tableView.dataSource = self;
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kTableViewReuse];
    
    [self.view addSubview:tableView];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    /* cell创建三种方式
     1 直接创建
     UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
     2 从重用池取出对应标识的cell
     UITableViewCell *tableViewCell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
     // 如果从重用池中取出的cell为空, 创建一个新的cell
     if (!tableViewCell) {
     tableViewCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
     }
     3 通过注册registerClass来创建
     // 通过注册创建出来的cell的style是Default(没有副标题)
     */

    UITableViewCell *tableViewCell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
    // 如果从重用池中取出的cell为空, 创建一个新的cell
    if (!tableViewCell) {
        tableViewCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
        _numCount++;
        NSLog(@"%@创建新cell第%ld次", tableViewCell, _numCount);
    } else {
        NSLog(@"重用旧cell%@", tableViewCell);
    }
    /* cell的style
     UITableViewCellStyleDefault  cell默认style 没有副标题
     UITableViewCellStyleValue1   最左边主标题, 最右边副标题
     UITableViewCellStyleValue2   小字号, 蓝色主标题, 黑色副标题, 主副标题紧挨
     UITableViewCellStyleSubtitle 主副标题上下紧挨, 主标题字号大, 副标题字号小
     */
    // cell 主标题
    tableViewCell.textLabel.text = @"123";
    // cell 副标题
    tableViewCell.detailTextLabel.text = @"呵呵";
    //
    tableViewCell.imageView.image = [UIImage imageNamed:@"4"];
    return tableViewCell;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
